{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Support vector regression\n",
    "### Dr. Tirthajyoti Sarkar, Fremont, CA 94536\n",
    "\n",
    "Here is the nice article how support vector method can also be used for regression.\n",
    "\n",
    "https://www.saedsayad.com/support_vector_machine_reg.htm"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### A simple nonlinear function\n",
    "The aim is to create some synthetic data which is not very amenable for linear regression models. We will show how a Support Vector regressor enhances the predictive performance."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "def nonlinear(array):\n",
    "    return (10*array[:,0]-np.exp(0.01*array[:,1]+np.log(1+array[:,2]**2)))/(array[:,3]**2+5)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Generate features and target data for regression"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "n_samples = 200\n",
    "n_features = 4"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "x = 5*np.random.rand(n_samples,n_features)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "y = nonlinear(x)+np.random.randn(n_samples)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "y=y.reshape(n_samples,1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "df = pd.DataFrame(data=np.hstack((x,y)),columns=['X1','X2','X3','X4','y'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>X1</th>\n",
       "      <th>X2</th>\n",
       "      <th>X3</th>\n",
       "      <th>X4</th>\n",
       "      <th>y</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.818477</td>\n",
       "      <td>4.027099</td>\n",
       "      <td>1.131048</td>\n",
       "      <td>0.024221</td>\n",
       "      <td>2.540776</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1.250933</td>\n",
       "      <td>1.458881</td>\n",
       "      <td>0.978987</td>\n",
       "      <td>0.903619</td>\n",
       "      <td>2.602005</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>4.878818</td>\n",
       "      <td>4.814252</td>\n",
       "      <td>1.773927</td>\n",
       "      <td>1.382003</td>\n",
       "      <td>4.243708</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4.770039</td>\n",
       "      <td>2.108497</td>\n",
       "      <td>1.250745</td>\n",
       "      <td>2.135227</td>\n",
       "      <td>3.721822</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>3.315885</td>\n",
       "      <td>4.742257</td>\n",
       "      <td>1.846138</td>\n",
       "      <td>3.843564</td>\n",
       "      <td>1.268514</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "         X1        X2        X3        X4         y\n",
       "0  0.818477  4.027099  1.131048  0.024221  2.540776\n",
       "1  1.250933  1.458881  0.978987  0.903619  2.602005\n",
       "2  4.878818  4.814252  1.773927  1.382003  4.243708\n",
       "3  4.770039  2.108497  1.250745  2.135227  3.721822\n",
       "4  3.315885  4.742257  1.846138  3.843564  1.268514"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Plotting the data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 720x576 with 4 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig,ax = plt.subplots(2,2,figsize=(10,8))\n",
    "ax = ax.ravel()\n",
    "for i in range(4):\n",
    "    ax[i].scatter(df[df.columns[i]],df['y'],edgecolor='k',color='red',alpha=0.75)\n",
    "    ax[i].set_title(f\"{df.columns[i]} vs. y\",fontsize=14)\n",
    "    ax[i].grid(True)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Test/train split"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "X = df[['X1','X2','X3','X4']]\n",
    "y = df['y']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.model_selection import train_test_split"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [],
   "source": [
    "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33, random_state=42)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Support vector regressor with linear kernel\n",
    "\n",
    "Here is scikit-learn's SVR doc: https://scikit-learn.org/stable/modules/generated/sklearn.svm.SVR.html"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "SVR(C=1.0, cache_size=200, coef0=0.0, degree=3, epsilon=0.1, gamma='scale',\n",
       "    kernel='linear', max_iter=-1, shrinking=True, tol=0.001, verbose=False)"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.svm import SVR\n",
    "svr_linear = SVR(kernel='linear',gamma='scale', C=1.0, epsilon=0.1)\n",
    "svr_linear.fit(X_train, y_train) "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Test score"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.5039103904226544"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "svr_linear.score(X_test,y_test)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Linear regression as a baseline"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.linear_model import LinearRegression"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [],
   "source": [
    "linear = LinearRegression()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None, normalize=False)"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "linear.fit(X_train,y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.5131204583471316"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "linear.score(X_test,y_test)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Support vector regressor with Gaussian (radial basis function) kernel"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "SVR(C=1.0, cache_size=200, coef0=0.0, degree=3, epsilon=0.1, gamma='scale',\n",
       "    kernel='rbf', max_iter=-1, shrinking=True, tol=0.001, verbose=False)"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "svr_rbf = SVR(kernel='rbf',gamma='scale', C=1.0, epsilon=0.1)\n",
    "svr_rbf.fit(X_train, y_train) "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.6473177483091139"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "svr_rbf.score(X_test,y_test)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "So, clearly, the RBF kernel showed better accuracy on the test set"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.metrics import mean_squared_error"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "RMSE for linear SVR: 1.442957827502489\n",
      "RMSE for RBF kernelized SVR: 1.2166492012822947\n"
     ]
    }
   ],
   "source": [
    "print(\"RMSE for linear SVR:\",np.sqrt(mean_squared_error(y_test,svr_linear.predict(X_test))))\n",
    "print(\"RMSE for RBF kernelized SVR:\",np.sqrt(mean_squared_error(y_test,svr_rbf.predict(X_test))))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### We can do a grid search of hyperparameters (with 5-fold cross-validation) to see if the test/validation score be improved"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.model_selection import GridSearchCV"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [],
   "source": [
    "params = {'C':[0.01,0.05,0.1,0.5,1,2,5],'epsilon':[0.1,0.2,0.5,1]}"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [],
   "source": [
    "grid = GridSearchCV(svr_rbf,param_grid=params,cv=5,scoring='r2',verbose=1,return_train_score=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Fitting 5 folds for each of 28 candidates, totalling 140 fits\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "[Parallel(n_jobs=1)]: Using backend SequentialBackend with 1 concurrent workers.\n",
      "[Parallel(n_jobs=1)]: Done 140 out of 140 | elapsed:    0.4s finished\n",
      "c:\\program files\\python37\\lib\\site-packages\\sklearn\\model_selection\\_search.py:814: DeprecationWarning: The default of the `iid` parameter will change from True to False in version 0.22 and will be removed in 0.24. This will change numeric results when test-set sizes are unequal.\n",
      "  DeprecationWarning)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "GridSearchCV(cv=5, error_score='raise-deprecating',\n",
       "             estimator=SVR(C=1.0, cache_size=200, coef0=0.0, degree=3,\n",
       "                           epsilon=0.1, gamma='scale', kernel='rbf',\n",
       "                           max_iter=-1, shrinking=True, tol=0.001,\n",
       "                           verbose=False),\n",
       "             iid='warn', n_jobs=None,\n",
       "             param_grid={'C': [0.01, 0.05, 0.1, 0.5, 1, 2, 5],\n",
       "                         'epsilon': [0.1, 0.2, 0.5, 1]},\n",
       "             pre_dispatch='2*n_jobs', refit=True, return_train_score=True,\n",
       "             scoring='r2', verbose=1)"
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "grid.fit(X_train,y_train)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Check which was deemed best estimator by the grid search"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "SVR(C=5, cache_size=200, coef0=0.0, degree=3, epsilon=0.5, gamma='scale',\n",
       "    kernel='rbf', max_iter=-1, shrinking=True, tol=0.001, verbose=False)"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "grid.best_estimator_"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Fit that estimator to the data and see"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "SVR(C=5.0, cache_size=200, coef0=0.0, degree=3, epsilon=0.5, gamma='scale',\n",
       "    kernel='rbf', max_iter=-1, shrinking=True, tol=0.001, verbose=False)"
      ]
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "svr_best=SVR(kernel='rbf',gamma='scale', C=5.0, epsilon=0.5)\n",
    "svr_best.fit(X_train, y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.6776661577094625"
      ]
     },
     "execution_count": 30,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "svr_best.score(X_test,y_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "RMSE for RBF kernelized SVR: 1.163125361525394\n"
     ]
    }
   ],
   "source": [
    "print(\"RMSE for RBF kernelized SVR:\",np.sqrt(mean_squared_error(y_test,svr_best.predict(X_test))))"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.0"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
